const { nilValue, getParam } = require("../base");
class BaseErr {
    constructor(code, msg) {
        this.code = code;
        this.msg = msg;
    }
    resMaker() {
        let code = nilValue(this.code) ? -3000 : this.code;
        let targetMsg = "未知错误";
        if (this.msg) {
            targetMsg = this.msg;
        } else if (!nilValue(this.code)) {
            targetMsg = `错误码 ${this.code}`;
        }
        return {
            errCode: code,
            errMsg: targetMsg,
        };
    }
}

class InsideErr extends BaseErr {
    constructor(err) {
        let code = getParam(err, ["code", "errCode", "errcode", "errorCode", "errorcode"]);
        let msg = getParam(err, ["message", "errMsg", "errmsg", "errorMsg", "errorMessage"]);
        super(code, msg);
    }
}

class ParamErr extends BaseErr {
    constructor(key) {
        let msg = `${key || ""}参数错误`;
        super(-3001, msg);
    }
}
class SignErr extends BaseErr {
    constructor() {
        let msg = "签名校验失败";
        super(-3003, msg);
    }
}

module.exports = {
    BaseErr,
    ParamErr,
    SignErr,
    InsideErr,
};
